
# 具体的神经网络层
# 需要考虑的内容：
# 输入是什么？输出是什么？ 神经元数量？ 正向传播与反向传播过程中的参数？ 激活？
import numpy as np
# 具体的神经网络层
def linear(x,in_,out_,w=[],b=[]):
    node = [in_,out_]
    L = len(node)
    if w == [] and b==[]:
        for i in range(L - 1):
            w.append(np.random.normal(loc=0, scale=1 / (node[i] + 1), size=(node[i], node[i + 1])))

        for i in range(L - 1):
            b.append(np.random.normal(loc=0, scale=1 / (node[i] + 1), size=(node[i + 1],)))

    x = x@w+b
    return x,w,b

def ReLu(self, z):
    """
    :param z:输入矩阵
    :return: 输出矩阵和0的较大者
    """
    z = np.array(z, dtype=np.float64)
    return np.maximum(z, np.array([0]))